package priv.yiyuan.example.design.visitor;

import java.util.ArrayList;
import java.util.List;

/**
 * 列出所有文件名的访问者
 * <p>
 * 具体的访问者，用于收集文件系统中的所有文件名，它在 visit 方法中将文件名添加到列表中，而 visit 方法中只打印目录名称
 *
 * @author YiYuan
 * @data 2025/8/1
 * @apoNote
 */
public class FileNameListingVisitor implements FileSystemVisitor {

    private List<String> fileNames = new ArrayList<>();

    @Override
    public void visit(File file) {

        fileNames.add(file.getName());
        System.out.println("Listing file: " + file.getName());

    }

    @Override
    public void visit(Directory directory) {

        System.out.println("Listing directory: " + directory.getName());

    }

    public List<String> getFileNames() {
        return fileNames;
    }
}
